iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
AI & Data

利用SeamlessM4T學習語音辨識架構及應用系列 第 8

DAY08 - 測試SeamlessM4T的S2ST(Speech-to-Speech Translation)功能

  • 分享至 

  • xImage
  •  

S2ST(Speech-to-Speech Translation)是語音轉語音的模型,語言可以選擇,不管是輸入及輸出都可以選擇語言,所涵蓋的語言代號請參考連結:SeamlessM4T語言別代號。本篇使用SeamlessM4T的S2ST功能,看看使用流程是否容易上手,以及翻譯結果的準確性。

安裝SeamlessM4T

安裝SeamlessM4T請參考文章SeamlessM4T安裝及使用環境建置

使用步驟

先導入模型,本次推出的SeamlessM4T有兩種型號:seamlessM4T_large與seamlessM4T_large。以large版本為例,執行以下程式碼後即已備好模型:

import torch
from seamless_communication.models.inference import Translator

**translator = Translator(
    "seamlessM4T_large",
    "vocoder_36langs",
    torch.device("cuda:0"),
    torch.float16,
)

此步驟的用意為在GPU上初始化一個轉譯器,選用模型"seamlessM4T_large",以及聲碼器"vocoder_36langs",官方建議選擇半精度浮點數(float16)可能是因為要節省記憶體,但可能因此影響翻譯精準度。

語音輸入需為音檔格式,而音檔格式取樣率限定為16kHz,若音檔取樣率不是16kHz,MetaAI提供以下程式碼轉換供使用者轉換自己的音檔取樣率:

import torchaudio
resample_rate = 16000
waveform, sample_rate = torchaudio.load(<path_to_input_audio>)
resampler = torchaudio.transforms.Resample(sample_rate, resample_rate, dtype=waveform.dtype)
resampled_waveform = resampler(waveform)
torchaudio.save(<path_to_resampled_audio>, resampled_waveform, resample_rate)

我使用的音檔為英文語音 ”The government can't afford to wobble on this issue.播放

將此音檔丟入translator中,設定模型為”s2st”,目標語言為中文(官方公布的代碼為cmn)

translated_text, wav, sr = translator.predict(
                ".input_s2st.wav",
                "s2st",
                tgt_lang="cmn"
                )

print(translated_text)  #政府不能在这个问题上摇摆不定 ⁇

不知為何他轉譯的中文後面有兩個問號,輸出結果的語音為 播放

若想將輸出結果儲存為wav檔,執行程式碼如下:

import torchaudio

torchaudio.save("output_s2st.wav", wav[0].cpu(), sample_rate=sr)

若想在Conda環境播放該輸出結果,執行程式碼如下:

from IPython.display import Audio

Audio(wav[0].cpu(), rate=sr)

總結

利用SeamlessM4T的S2ST功能(Speech-to-Speech Translation),將輸入之語音檔匯入預備好的轉譯器(Translator),選擇任務s2st,設定目標語言即可做轉譯,並產生目標語言的音檔。本篇使用英語語音轉中文語音,內容算是正確,但是中文語音聽起來有機械感,也非台灣口音。


上一篇
DAY07 - SeamlessM4T的S2TT(Speech-to-Text Translation)功能體驗
下一篇
DAY09 - SeamlessM4T的T2TT功能評測
系列文
利用SeamlessM4T學習語音辨識架構及應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言